# 导包
import json
import unittest
from parameterized import parameterized
from IHRM.api.loginAPI import Login_API


# 设置传递方法
def build_data():
    #指定文件，将数据导入
    json_file = "../data/Login.json"
    #json_file = "/Users/wwyan/Test/JieKou_Test/IHRM/data/Login.json"
    test_data = []
    # 打开json数据，将数据的传入参数中
    with open(json_file, encoding="utf-8") as f:
        # 将读取出来的数据存放在参数中
        json_data = json.load(f)
        for every_case in json_data :
            login_data = every_case.get("login_data")
            status_code = every_case.get("status_code")
            success = every_case.get("success")
            code = every_case.get("code")
            message = every_case.get("message")
            test_data.append((login_data, status_code, success, code, message))
        return test_data

# 创建测试类
class TestLoginParams(unittest.TestCase):

    # 前置处理
    def setUp(self) :
        self.login_api = Login_API()

    # 后置处理
    def tearDown(self) :
        pass

    # 定义测试方法
    # 登录成功
    # 需要parameterized构造器，测试用例才能传递参数
    @parameterized.expand(build_data)
    def test_loginApi(self,login_data,status_code,success,code,message):

        response = self.login_api.get_loginAPI(login_data)
        print(response)
        # 断言
        self.assertEqual(status_code, response.status_code)
        # "success":true,
        # "code":10000,
        # "message":"操作成功！",
        self.assertEqual(success,response.json().get("success"))
        self.assertEqual(code,response.json().get("code"))
        self.assertIn(message,response.json().get("message"))




    #     # 没有密码，少参
    # def test_loginApi_0031(self):
    #     response = self.login_api.get_loginAPI({"mobile": "13800000002"})
    #         # 断言
    #     self.assertEqual(200, response.status_code)
    #
    #     self.assertEqual(False, response.json().get("success"))
    #     self.assertEqual(20001, response.json().get("code"))
    #     self.assertIn("用户名或密码错误", response.json().get("message"))